package com.wootion.cims.general.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Pattern;

/**
 *  类说明:身份证合法性校验  
 *  18位身份证号码：第7、8、9、10位为出生年份(四位数)，第11、第12位为出生月份，第13、14位代表出生日期，第17位代表性别，奇数为男，偶数为女。  
 */  
public class IdcardValidatorUtil {   
  
    // 每位加权因子   
    private static int power[] = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };   
  
    // 第18位校检码   
    private String verifyCode[] = { "1", "0", "X", "9", "8", "7", "6", "5",   
            "4", "3", "2" };
    
    /** 
     * 验证所有的身份证的合法性 
     *  
     * @param idcard 
     * @return 
     */  
    public static boolean isValidatedAllIdcard(String idcard) {
        String id;//定义字符串型ID
        int[] arr=new int[18];//创建数组
        int sum=0;
        int flag=0;
        int[] weight=new int[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};//乘以的系数
        int[] checkDigit=new int[]{1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 };//对应的校验码
        boolean matches = idcard.matches("^[1-9]\\d{5}(18|19|20|(3\\d))\\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$");
        if (!matches){
            return false;
        }else {
            return true;
        }
//        for(int i=0;i<18;i++){
//            arr[i]= Integer.parseInt(idcard.substring(i, i+1));   //使用IdentityCard.substring(i, i+1)方法可取出号码的每一位
//            if(i!=17){
//                sum+=weight[i]*arr[i];
//            }
//        }
//        flag=sum%11;           //得出余数
//        if(checkDigit[flag]==arr[arr.length-1]){
//            return true;
//        }else{
//            return false;
//        }
    }

}
